# coding=utf-8
"""
求字符串中第一个只出现一次的字符
使用两个hash，一个记录每个字符出现的次数，另一个记录每个字符第一次出现的位置
"""


def first_not_repeating_char(string):
    if not string:
        return -1, ""

    count = {}  # 记录每个字符出现的次数
    loc = {}  # 记录每个字符第一次出现的位置

    for k, s in enumerate(string):
        count[s] = count[s] + 1 if count.get(s) is not None else 1
        loc[s] = loc[s] if loc.get(s) is not None else k

    ret = float('inf')  # 表示正无穷
    word = ""  # 记录第一个只出现一次的字符

    for k in loc.keys():
        if count.get(k) == 1 and loc[k] < ret:  # 只出现一次  索引最小
            ret = loc[k]
            word = k
    return ret, word


if __name__ == '__main__':
    test = 'abaccbdse'
    print(first_not_repeating_char(test))
